Jeśli twoja troska ma być prawdziwa wobec zleceniodawców odpoczynku.
Następnie są zwykle 4 punkty, aby pamiętać:
- Baza URI dla usługi internetowej
- Internet typ nośnika danych obsługiwanych przez usługę internetową.
Często jest to JSON, XML lub YAML, ale może to być jakikolwiek inny prawidłowy typ mediów Internet .
- Zestaw operacji obsługiwanych przez usługę WWW przy użyciu metod HTTP (np. GET, PUT, POST lub DELETE).
- API musi być napędzany hipertekstu
See, http://en.wikipedia.org/wiki/Representational_state_transfer więcej szczegółów.
Teraz, z tym, co powiedziałem, sugerowałbym zmianę powyższego kodu, aby był czymś zbliżonym do poniższych pseudo-kodów.
1) Istnienie zasobów jest kluczowe, pomyśl o swoich wpisach jako zbiór zasobów, do których dostęp ma URI.(Uwierzytelnianie & autoryzacja są inne obawy, że możesz również obsłużyć):
api.domain.com/resources/posts => To URI wskazuje na zbiór postach
2) zestaw operacji, które będziemy chcieli, aby wspierać za pomocą metody HTTP/czasowniki muszą zdefiniowana, jako przykład może chcemy odzyskać tylko jeden członek kolekcji w ten sposób:
api.domain.com/resources/posts/12
Poniżej znajdują się nagłówki żądania: & treść, które można znaleźć w przychodzącym Wniosek o takim adresie:
Accept: application/json
Content-Type: application/json
URL żądania: http://api.domain.com/resources/posts/12
Zapytanie Metoda: GET
Aplikacja powinna być w stanie obsłużyć tego typu żądanie, bez potrzeby ustalania operacji w URI, przywracając nas do punktu (1),
zamiast posiadania identyfikatora URI zapisanego w ten sposób:
domain.com/api/posts/ wszystko
Twój URI powinien być modelem w ten sposób:
resources/postów/12 jako zasoby/typ/element, aby pobrać jeden element ze zbioru,
zasoby/posty jako zasoby/typ do pracy z całą kolekcją.
Oto przykład kodów:
Wspólna klasa abstrakcyjna Tutaj można realizować pewne wspólne zadania. Jeśli korzystasz z usługi opartej na usługach , może to również zostać wykonane przy użyciu usługi.
abstract class ResourcesController extends AppController {
}
class PostResourcesController extends ResourcesController {
/**
* By the time this method is called in your controller/class, you already know
* that the HTTP method is GET.
*
* @param Request\$_GET $request A request instance
* @param int $postId The post ID to retrieve
*
* @return Response A reponse instance
*/
function getPost(Request $Request, $postId = null)
{
/**
* Here you can use the request object to get
* the response content type
* the requesting client accepts. Example JSON or XML.
*/
/**
* using the $postId you can then query your database
* to retrieve a post with that ID or use a sort of
* service.
*/
/**
* Once you implemented a you logic
* you can build a response to return.
*/
}
}
Kod ten jest niekompletny, ale mam nadzieję, że to daje wyobrażenie o tym, co prawdziwe Spokojny API może wyglądać.
Klucz, aby upewnić się, że "aplikacja może wchodzić w interakcje z zasobem, wiedząc dwie rzeczy: identyfikator zasobu i wymagane działanie".
Mam nadzieję, że to pomogło.
Jeśli używasz Sencha Dotknij wewnątrz aplikacji PhoneGab, można również użyć [wdrażanie Ext.Direct] (http://banchaproject.org) zamiast spokojny. –