Начало работы с RESTful HTTP API - PullRequest
3 голосов
/ 30 июля 2011

Я работаю в компании, занимающейся IP-камерами, и в настоящее время у нас есть устаревший интерфейс CGI HTTP API.CGI реализованы на C.

Я хотел бы изучить и реализовать новый HTTP RESTful API, чтобы можно было выполнять следующие типы операций:

http://[ipaddr]/api/video/start
http://[ipaddr]/api/video/stop

Я хотел бы написатьэтот RESTful API с нуля в свободное время, чтобы я мог освоить этот новый навык.

У меня большой опыт работы во встроенном программировании на C и в веб-технологиях (HTML, JS, CSS и т. д.), однако,Я хотел бы реализовать связь между интерфейсным веб-UX и кодом приложения (и / или веб-сервером).

Я хотел бы получить совет о текущих методах реализации API-интерфейсов HTTP.Мне действительно нравится изучать «правильный путь», прежде чем начать.

Я обнаружил, что все, что я видел, такие как OAuth, XAuth, REST, SOAP, языки реализации, немного ошеломляет!

Есть ли кто-нибудь на переполнении стека, который мог бы обеспечить разумный путь для изучения этих вещей?Я очень хорошо разбираюсь в самообучении, но могу просто сделать несколько указателей в правильном направлении.

Я хотел бы написать все, что могу, в идеале на C, так как это будет самый простой способ попасть вкод приложения.Однако, если люди порекомендуют другой язык, я буду рад, если есть явные плюсы.

Ответы [ 3 ]

0 голосов
/ 30 июля 2011

Получите себе копию веб-сервисов RESTful и Ruby RESTful (О'Рейли).Они рассказывают о том, как спроектировать и внедрить сервисы RESTful, используя несколько разных технологий.Это так хорошо, что вам почти ничего не нужно, кроме RFC-2616 (HTTP 1.1) и оригинальной диссертации Роя Филдинга о REST.

Есть много отличных библиотек для сборки (в зависимости от того, сколько вы хотитеучиться напрямую).В мире Java клиентская библиотека Apache HTTP является хорошим фундаментальным уровнем.Среда REST, такая как RESTlet, автоматизирует большую часть остального для вас, делая его относительно простым.

0 голосов
/ 07 ноября 2012

start и stop - это не ресурсы, а действия, и они не принадлежат URL-адресу. Вместо этого вы должны использовать PUT или PATCH для отправки логического значения, такого как stream=true или stream=false, на URL-адрес, такой как http://[ipaddr]/video (нет необходимости в / api / либо)

Клиент отправляет новое состояние, и камера реагирует. Как только состояние было изменено (видео запущено или остановлено), оно отвечает 200, с новым состоянием в теле ответа, или 204 без тела ответа. Или, если операция длительная, вы можете ответить с помощью 202 Принято и без ответа.

То же самое можно использовать для запуска и остановки / аудио потоков.

Для получения дополнительной информации, пожалуйста, прочитайте http://weblogs.java.net/blog/mkarg/archive/2010/02/14/what-hateoas-actually-means

0 голосов
/ 30 июля 2011

Во-первых, вы должны выяснить, каким будет ваш веб-сервер, что, вероятно, будет зависеть от вашего выбора ОС. Windows или Linux? Или что-то еще?

Если вы используете Windows, вы, вероятно, будете использовать что-то вроде ASP.NET или WCF; в них есть хорошая поддержка REST, и вы можете легко найти хорошую документацию. Однако для этого, вероятно, потребуется реализация на управляемом языке, так что ожидайте от этого некоторой кривой обучения.

Если вы используете Linux в качестве веб-сервера, вы, вероятно, захотите использовать Apache в качестве программного обеспечения веб-сервера, что подразумевает любое количество различных возможностей для серверного программного обеспечения; PHP, Python и т. Д. Скорее всего, вы легко можете вызвать C из этих языков, хотя, вероятно, есть более простые способы сделать то, что вы хотите, чем вызывать C оттуда. Конечно, Linux как веб-сервер предоставляет вам дополнительные возможности для серверного программного обеспечения; вы всегда можете пойти с node.js и Express для вашего REST API; для того, чтобы сделать это хорошо, нужно учиться, но для быстрой скорости трудно победить node.js.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...