REST API를 작성하는 방법?


82

취미 프로젝트로 iPhone 앱을 작성 중이며 데이터를 제공하려면 웹 서비스가 필요합니다. 직장에서하는 것과 크게 다르지 않지만 직장에서는 뷰와 컨트롤러 만 작성합니다. 다른 사람이 모델 작성을 담당하며 일반적으로 클라이언트가 웹 서비스를 제공합니다.

나는 모든 사람이 MySQL과 PHP를 사용하고 있었을 때 웹 프로그래밍을 해본 적이 있으므로 내 기술은 약간 구식이지만 이미 알고있는 기술을 사용하여 끌어낼 수있을 것이라고 확신합니다. 그러나 쓸모없는 도구를 사용하여 시간을 낭비하고 싶지 않습니다. 나는 최첨단이 REST API를 작성하는 것이라고 생각했습니다. 모델을 정의하자마자 CRUD 기능이있는 REST API를 제공하는 꽤 좋은 프레임 워크가 있어야한다고 생각했습니다.

내 질문은 다음과 같습니다. REST API를 시작하고 실행하는 가장 빠른 방법은 무엇입니까? 이 API에 너무 많은 시간을 소비하지 않고 iPhone 앱 작성에만 집중하고 싶습니다. 웹 관리 및 개정 내역도 얻을 수 있다면 좋을 것입니다. 또한 API가 공개되지 않아야하므로 인증 지원도 훌륭 할 것입니다.

명확하게. PHP 프레임 워크는 괜찮습니다. 실제로 현재 호스팅이 지원한다는 것을 알고 있기 때문에 더 나을 수 있습니다.


1
REST는 아마도 여러분이 정말로 원하는 것이 아닐 것입니다. medium.com/@trevorhreed/…
Trevor

2
내가 작성한 이 66 줄 PHP 스크립트를 사용할 수 있습니다 .
mevdschee

답변 오년 후 8)
JustOnUnderMillions

답변:


42

편집하다:

분명히 3 년 동안 좋았던 아래 링크는 더 이상 작동하지 않으므로 잠시 동안 계속할 것으로 생각되는 몇 가지 새로운 자습서를 찾았습니다. 이것들은 매우 존경받는 ios dev 튜토리얼 사이트 인 Ray Wenderlich 사이트에 있습니다. 첫 번째 기사는 실제로 아래의 끊어진 링크를 참조하지만 그 자체로 완전합니다.

iOS 앱용 간단한 PHP / MySQL 웹 서비스를 작성하는 방법

두 번째는 약간 비틀어졌습니다. 백엔드와 AFNetworking에서 parse.com을 사용했습니다. 둘 다 아주 훌륭합니다.

핵심 데이터를 웹 서비스와 동기화하는 방법 – 1 부


나는 기계로 돌아가는 길에서 기사를 찾아서 아래의 깨진 링크를 수정했습니다. 사람들은 링크를 좋아하는 것 같아서 유지하겠습니다. 위의 링크는 생각할 수있는 더 많은 음식을 제공해야합니다.


나는 내 아이폰 앱으로 똑같은 일을하고있다. PHP에서 RESTful API를 빌드하는 방법에 대한이 기사를 찾았습니다.

https://web.archive.org/web/20130910164802/http://www.gen-x-design.com/archives/create-a-rest-api-with-php/

여기에 후속 기사도 있습니다.

https://web.archive.org/web/20130323001500/http://www.gen-x-design.com/archives/making-restful-requests-in-php/

기사 하단에 소스 코드에 대한 링크가 있습니다.


2
이 링크는 지금 시간이 초과 된 것 같습니다. 다른 사람에게 그런 일이 일어난다면 확실하지 않습니다. : /
Augie Gardner

8

Zend_Rest_Controller를 사용하여 ZEND Framework 에서 REST API를 프로그래밍 했으며 iPhone에서 ASIHTTPRequest를 사용 했습니다 . 둘 다 좋은 경험. 처음에는 ZEND를 설정하고 mySQL에 연결하는 데 약간의 문제가 있었지만이를 수행하는 방법을 파악한 후 API를 매우 빠르게 작성할 수있었습니다. 추가 질문이 있으면 더 많은 정보를 공유 할 수 있습니다.

편집 :에 대한 공식 문서가없는 것 같습니다 Zend_Rest_Controller. 이 링크 를 사용하여 API를 만드는 방법을 설명합니다. init()하위 클래스 에서 렌더링을 비활성화 하고 각 REST 호출에 대한 메서드를 구현 하기 만하면 됩니다.


Zend 사이트에 ZEND_Rest_Controller가 없습니다. ZEND_Rest_Server가 보입니다. 이게 당신이 말하는 건가요?
Dmitri

2
zend_rest_controller를 사용하는 방법에 대한 좋은 시작을 보려면 여기를 참조하십시오 : techchorus.net/create-restful-applications-using-zend-framework . 나머지 API를 만드는 것은이 수업을 통해 수월합니다
Philipp

이것은 내가 필요한 것보다 다소 정확 해 보입니다. 나는 그것을 시도하고 성공하면 이것을 내 대답으로 받아 들일 것입니다. 감사.
Erik B

4
나는 그가 성공하지 못한 것 같아요 ... : D
user151841

8

알려 드리기 위해 :

결국 Ruby on Rails를 사용하게되었습니다.

편집 : 이 답변은 Ruby on Rails를 선택하는 이유를 제공하지 않았고 REST API를 작성하는 방법에 대한 지침도 제공하지 않았기 때문에 내 동기와 간단한 지침을 줄 것이라고 생각했습니다.

Ruby on Rails에 관한 책을 읽기 시작했고 내가해야 할 일은 스캐 폴딩을 사용하는 것뿐이라는 것을 깨달았고 무료로 JSON REST API를 얻었습니다.

다음은 시작을위한 좋은 가이드입니다. http://guides.rubyonrails.org/getting_started.html

Ruby on Rails 환경을 설정하고 실행하면 REST API를 만드는 것이 실행하는 것보다 어렵지 않습니다.

$ rails generate scaffold Post name:string title:string content:text

(위 링크의 예) 또한 Rails가 매우 쉽고 무료로 heroku 에 배포 할 수 있다는 것을 알았습니다. 즉, 매우 기본적이고 트래픽이 적은 REST API에 대한 호스팅 비용을 지불 할 필요가 없었습니다. Ruby on Rails와 함께 일하게되어 기뻐하는 다른 이유가 많이 있지만,이 질문의 맥락을 벗어납니다.


10
자신에게 답을주고 확인 표시를하세요. 나쁜 형태 man very bad form.
thenetimp

29
@thenetimp 자신의 질문에 대답하는 것이 나쁘지 않습니다. 사실 정답이고 다른 사람이 제공하지 않는 한 권장됩니다. 당신은 당신의 대답을 받아들이는 것에 대해 어떤 대표도 얻지 못합니다. 그래서 나는 당신이 그것에 대해 무엇을 가질 수 있을지 정말로 모릅니다.
Erik B

3
당신이 선택에 대한 귀하의 추론을 준 경우가 더 나은 것
무스타파

4
@Nate REST API를 작성하려는 모든 사람에게 Ruby on Rails를 권장하므로 내 대답을 삭제하지 않을 것입니다. 그러나 귀하의 의견을 읽고 답변을 업데이트했습니다. 나는 그것이 당신을 기쁘게하기를 바랍니다.
Erik B

2
@ DennisKrøger 질문이 "REST API 작성 방법"인 경우 그런 다음 "RoR을 사용했습니다. 다음은 스캐 폴딩을 시작하기위한 가이드입니다."는 완전히 적절한 대답입니다.
Mattygabe

8

PHP로 RESTful API를 만드는 아주 간단한 자습서를 따랐습니다.

Corey Maynard-PHP로 RESTful API 만들기

주요 개념은 다음과 같습니다.

  • URI의 구문 분석을 처리하고 응답을 반환하는 하나의 추상 클래스
  • API에 대한 끝점으로 만 구성된 하나의 구체적인 클래스.



1

MVC를 따르는 다음 PHP 클래스를 확인하십시오. http://www.phpclasses.org/package/5080-PHP-Implement-REST-Web-services-servers.html

도움이 되었기를 바랍니다.


7
phpclasses.org의 모든 것을 사용하지 않는 것이 좋습니다 . 해당 사이트의 많은 수업은 테스트되지 않았고 안전하지 않으며 스크립트 키즈가 작성했습니다. PEAR 또는 Zend와 같이 더 평판이 좋은 곳을 찾으십시오
Dmitri

13
3000 명 이상의 PHP 개발자가 PHPClasses 사이트에 패키지를 제출했습니다. 일부는 다른 것보다 훨씬 더 능력이 있습니다. 많은 사람들이 PEAR와 Zend의 기여자이기도합니다. 테스트되지 않고 안전하지 않다고 말한 일부 패키지를 발견했다는 이유만으로 해당 사이트에서 배포 된 패키지를 사용하지 말라고 사람들에게 말하는 것은 순수한 편견입니다. @src가 추천하는 패키지는 우연히 최고 등급의 패키지입니다. 사이트에 배포되어 있기 때문에 모든 것에 대해 일반화하기로 결정하기 전에 패키지 코드 또는 적어도 사용자 등급을 살펴보면 더 현명했을 것입니다.
mlemos 2011 년

0

이미 PHP를 알고 있다면 PHP / MySQL 백엔드에 문제가 없습니다. iPhone과 호환되는 plist xml 형식으로 모든 응답을 보내고 다음 짧은 코드 조각을 사용하여 응답을 NSDictionary / NSArray / NSNumber 데이터 구조로 즉시 변환 할 수 있습니다.

NSString *response = [request responseString];
NSData* plistData = [response dataUsingEncoding:NSUTF8StringEncoding];
NSPropertyListFormat format;
NSString *errorStr;
NSDictionary* plist = [NSPropertyListSerialization propertyListFromData:plistData 
                                                       mutabilityOption:NSPropertyListImmutable 
                                                                 format:&format 
                                                       errorDescription:&errorStr];

또한 ASIHTTP 패키지를 사용하여 URL을 만들고, 비동기 요청을 보내고, 응답을 받기를 적극 권장합니다.

http://allseeing-i.com/ASIHTTPRequest/


0

웹 서비스에 익숙한 언어를 사용해야합니다. 요청에 대한 REST 응답을 공식화 할 수있는 모든 언어가 좋습니다.

즉, 무언가를 빠르게 실행하려면 Google App Engine에서 Python을 사용하는 것이 좋습니다. 무료이며 원하는 경우 Python 대신 Java를 사용할 수 있습니다. App Engine은 OpenID 및 / 또는 Google 계정을 사용한 인증을 지원하므로 (상호 배타적인지 확실하지 않음) 코드 작성이 더 쉬워집니다.

iOS 기기에서 요청하는 한 ASIHTTPRequest를 사용하는 것이 좋습니다 .


0

또 다른 옵션은 초경량 지속성 프레임 워크 인 restSQL입니다. http://restsql.org를 참조하십시오 . MySQL 및 PostgreSQL을 지원하며 Apache Tomcat과 같은 표준 Java EE 컨테이너에서 실행됩니다.

restSQL은 매우 색다른 데이터 액세스 계층입니다. restSQL은 데이터베이스의 객체 지향 뷰가 아닙니다. 관계형 데이터베이스 테이블의 플랫 또는 계층 적 "뷰"를 제공합니다. 이러한 뷰는 간단한 REST 기반 HTTP 또는 Java API를 통해 쿼리 및 업데이트가 가능합니다. HTTP 인터페이스는 HTTP의 기본 제공 기능을 추상화하는 대신 사용하는 REST 원칙을 기반으로합니다.

'CRUD 기능이있는 REST API'가 필요하며 이것이 바로 restSQL의 최적 지점입니다. 코드없이이 작업을 수행 할 수 있습니다. XML 파일을 통해 SQL 리소스를 정의하고 전체 CRUD 기능으로 HTTP 호출을 시작하기 만하면됩니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.