2016-10-04 9 views
2

Должны ли параметры запроса в ссылках, появляющихся в JSON-API ответах, быть процентными?Должны быть закодированы ссылки в ответах json-api?

Примеры из jsonapi.org не кодируются, как в:

{ 
    "links": { 
    "self": "http://example.com/articles", 
    "next": "http://example.com/articles?page[offset]=2", 
    "last": "http://example.com/articles?page[offset]=10" 
    }, 
    "data": [{ 
    "type": "articles", 
    "id": "1", 
    "attributes": { 
     "title": "JSON API paints my bikeshed!" 
    } 
    ] 
} 

Тем не менее, есть также примечание относительно параметров кодирования в запросах:

GET /articles?include=author&fields[articles]=title,body&fields[people]=name HTTP/1.1 
Accept: application/vnd.api+json 

Примечание: В приведенном выше примере URI показывает незакодированные [и] символы просто для удобочитаемости. На практике эти символы должны быть закодированы в процентах в соответствии с требованиями RFC 3986.

Относится ли эта нота только к запросам? Или ответы также процентов кодированный, как:

{ 
    "links": { 
    "self": "http://example.com/articles", 
    "next": "http://example.com/articles?page%5Boffset%5D=2", 
    "last": "http://example.com/articles?page%5Boffset%5D=10" 
    }, 
    "data": [{ 
    "type": "articles", 
    "id": "1", 
    "attributes": { 
     "title": "JSON API paints my bikeshed!" 
    } 
    ] 
} 

ответ

1

Да, примечание о кодировании адресов URI в вашем вопросе относится только к запросу, а не ответ

С json строки, возвращаемой внутри ответ, единственное, что требуется, чтобы избежать это двойной кавычки "

GET запросов (не ответы) являются различным шаром из воска. Все, что содержится в запросе GET, переданном как параметр в URL, должно быть закодировано в URL. Поэтому, если у вас есть параметр url=http://some.url.com, URL-адрес справа от назначения параметров требует кодирования.

Это сложно с запросами POST и PUT. В зависимости от типа содержимого, заданного в заголовке, вам может потребоваться кодировать. Если ваш тип контента равен application/json, вам не нужно указывать URL-код для кодирования в вашей json-строке (за исключением указанных выше ").

Теперь, если указанная конформация содержимого не соответствует вашей отправке (или если вы явно не добавили ее, и по умолчанию она что-то использует), например, если вы отправляете content-type: application/x-www-form-urlencoded, но отправляете строку json, API служба может или не может принять его и кто знает, как он будет обрабатывать содержимое внутри, так как он расшифровывает его.