2011-08-12 6 views
0

현재 SQL 문을 포함하거나 특정 작업을 수행하는 특정 PHP 스크립트를 호출하는 많은 웹 페이지가 있습니다. 즉 getNames.php - as 아약스 콜백의 일부. 특히 유지 보수가 불가능합니다.기존 웹 응용 프로그램에서 REST와 유사한 API를 구현하기위한 전략

나는 REST와 같은 API를 사용하여 클라이언트에게 필요한 데이터를 얻은 다음 사용할 수있는 데이터로 데이터를 집어 넣으려고했다. 이는 코드에서 매우 복잡한 sql을 유지하는 부담을 줄이고 데이터를 중앙 집중식으로 처리 할 수 ​​있으므로 매력적입니다. 따라서 한 번의 AJAX 호출만으로 많은 데이터를 얻지는 못합니다. 또한 데이터베이스가 클라이언트에 미치는 영향을 줄이기 위해 변경할 수 있습니다.

  1. 이 사이트는 게임이다, 그래서 나는 RESTlike API는 가능한 한 많은 부정 행위/남용으로부터 보호해야합니다

    그러나 나는이 전략을 볼 수있는 두 가지 문제가 있습니다.

  2. REST API의 모든 예는 컨트롤러를 사용하여 루트의 요청을 처리합니다. 그것은 우리가 // company/games/game /에 있기 때문에 나에게 이상적이지 않으며 이미 root (// company /)에 index.php가 있습니다.

나열된 두 가지 제약 조건에 대해 어떤 옵션과 전략이 있습니까?

+2

theres 당신의 하위 디렉토리에 글꼴 컨트롤러가 없어 ... 당신은 단지 제대로 구성해야합니다. 패턴은 여전히 ​​작동합니다. – prodigitalson

+0

대답 해 줄 수 있겠습니까? 컨트롤러로 // company/games/game/rest를 사용할 수 있도록 어떻게 설정해야합니까? –

답변

0

글쎄, 당신은 의견을 묻고 있지만, 충분히 익숙해 져서 (수년 동안 많은 API 스키마를 작성하여) Net 학대까지 완전히 기꺼이 열어두고 있습니다. 여기서 핵심은 두 가지 질문에서 모두 해결할 의견을 제시해야한다고 생각합니다. REST는 단순히 일련의 원칙입니다. 물론 RESTful 패턴을 명시 적으로 따르는 사람들이 있지만 대부분의 사람들에게는 실용적이지 않습니다.

예를 들면 플리커 "REST"API를 가지고 ... 전화는 다음과 같이 보일 수 있습니다 : http://api.flickr.com/services/rest/?method=flickr.favorites.getContext&api_key=a114adf91150953107987e4c3dc14df8&photo_id=6033564557&format=json&nojsoncallback=1&api_sig=0d2c215992d643ef6fe4a085805f7059

은 매우 편안하고하지, 패턴 형성의 관점에서 ... 그러나, 여기에 포함 REST의 모든 요소와 충분히 좋은 모델입니다. 한눈에 무엇을하고 있는지 이해할 수 있으며 그 위에 쉽게 만들 수 있습니다.

결국 REST는 프로토콜이 아니며 그 자체의 패턴조차도 아닙니다. 원하는대로 구현할 수 있습니다. 항상 상호 운용성 중간 계층이 있으며 요점은이를 이해할 수있게 만드는 것입니다 ... 그리고 많은 REST 패턴이 사실상 그 방식으로 넘어 가서 기능에 대한 형식을 선호합니다.

사실 내가 본 패턴의 대부분은 특히 고급 기능이 부족하지만 나머지는 REST ... Keep It Simple (Stupid)의 요점입니다.

+0

아, 그래. 대부분의 사이트는/table/row/item을 선택 기준으로 사용합니다. 솔직히 말해서 나는 그 명명 체계 (? xxx = yyy & zzz = www & etc)를 좋아하지는 않았지만 그것이 작동한다면 ... –

+0

또한 페이지 소스를보고 //api.company/를보고있는 누군가를 추가하는 것은 빨간 넝마와 같을 것이다. 황소. –

+0

잘 모르겠습니다. AJAX를 사용하면 API가 노출됩니다. 웹 사이트가 내부적으로 API를 사용하는 것과 같은 대규모 프로젝트를 대부분 구축하지만 클라이언트에 도달 할 때까지는 그 어떤 흔적도 없습니다. 해당 데이터를 JSON 또는 XML로, 때로는 AJAX 용으로, 때로는 페이지 수준 JS 용으로 직렬화 할 수있는 유연성을 제공합니다. –

관련 문제