Мне интересно, каковы будут недостатки для производственного сервера, API которого полностью не знает пути HTTP-запроса. Например, API, который полностью определяется параметрами запроса или даже полностью определяется телом http.
let server = require('http').createServer(async (req, res) => {
let { headers, method, path, query, body } = await parseRequest(res);
// `headers` is an Object representing headers
// `method` is 'get', 'post', etc.
// `path` could look like /api/v2/people
// `query` could look like { filter: 'age>17&age<35', page: 7 }
// `body` could be some (potentially large) http body
// MOST apis would use all these values to determine a response...
// let response = determineResponse(headers, method, path, query, body);
// But THIS api completely ignores everything except for `query` and `body`
let response = determineResponse(query, body);
doSendResponse(res, response); // Sets response headers, etc, sends response
});
API вышеупомянутого сервера довольно странный. Он полностью игнорирует путь, метод, заголовки и тело. Хотя большинство API в первую очередь учитывают метод и путь и выглядят следующим образом ...
method path description
GET /api - Metadata about api
GET /api/v1 - Old version of api
GET /api/v2 - Current api
GET /api/v2/people - Make "people" db queries
POST /api/v2/people - Insert a new person into db
GET /api/v2/vehicles - Make "vehicle" db queries
POST /api/v2/vehicles - Insert a new vehicle into db
.
.
.
Этот API учитывает только URL-запросы и выглядит совсем иначе:
url query description
<empty> - Metadata about api
apiVersion=1 - Old version of api
apiVersion=2 - Current api
apiVersion=2&table=people&action=query - Make "people" db queries
apiVersion=2&table=people&action=insert - Add new people to db
.
.
.
Реализация такого рода API, и обеспечение того, чтобы клиенты использовали правильную схему API, не обязательно является проблемой. Вместо этого я задаюсь вопросом о , какие еще проблемы могут возникнуть для моего приложения из-за написания API с такой схемой .
- Было бы это вредно для SEO?
- Будет ли это вредно для производительности? (кэширование?)
- Существуют ли дополнительные проблемы, возникающие, когда API не знает метода и пути URL?