Если вы действительно пытаетесь создать спокойный API вместо этого, если некоторые конечные точки URL-адресов, которые говорят на каком-то HTTP-диалекте, вам следует придерживаться GET. Это даже снова на вашем пути, так что вы, кажется, уверены, что это получится.
Вместо того, чтобы пытаться скрыть имя пользователя и пароль в параметрах GET
или POST
, вместо этого следует использовать Обычная аутентификация , которая была изобретена специально для этой цели и универсально доступна для клиентов (и доступно с использованием удобных методов в Синатре).
Кроме того, если вы пытаетесь использовать REST, вам следует принять концепцию ресурсов и коллекций ресурсов (что подразумевается под R и E REST). Таким образом, у вас есть один URL, например, http://myapi.heroku.com/NearbyPlaces
. Если вы GET
там, вы собираете информацию об этом ресурсе, если вы POST
, вы создаете новый ресурс, если вы PUT
обновляете существующий ресурс, и если вы DELETE
, вы удаляете его. То, что вы должны сделать прежде, это структурировать ваше объектное пространство в эти ресурсы и спроектировать ваш API вокруг него.
Возможно, вы могли бы иметь коллекцию ресурсов на http://myapi.heroku.com/places
. Каждое место в качестве ресурса имеет уникальный URL-адрес, такой как http://myapi.heroku.com/places/123
. Новые поляки могут быть созданы с помощью POST
ing до http://myapi.heroku.com/places., а соседние места могут быть собраны с помощью GET
ing http://myapi.heroku.com/places/nearby?lon=12.343523&lat=56.123533&radius=30
. Если вызов может вернуть массив или URL-адреса в близлежащие места, например,
[
"http://myapi.heroku.com/places/123",
"http://myapi.heroku.com/places/17",
"http://myapi.heroku.com/places/42"
]
Если вы хотите быть действительно доступным для обнаружения, вы можете также принять HATEOAS , который ограничивает возможности REST для того, чтобы позволить клиентам API «просматривать» API, как это сделал бы пользователь с браузером. Чтобы разрешить это, вы используете в своем API гиперссылку, которая указывает на другие ресурсы, как в примере выше.