Почему POST на красном языке автоматически изменяет первый символ параметров на верхний регистр? - PullRequest
1 голос
/ 30 мая 2019

Для следующего простого кода,

Red []

#include %tools.red

url: to url! rejoin ["http://somesite.com:7466/japi"]

response: write url [
        post [
        Content-Type: "application/json"
        req: "requestinfo"  
        list: "This is a pie."
    ]
    {}    
]

print response

Результат примерно такой:

{"Status": "fail", "Value": "неизвестный запрос: \ u0026 {POST / japi HTTP / 1.1 1 1 карта [Принять: [ / ] Тип содержимого: [application / json] Треб: [requestinfo] Список: [Это пирог.] Длина содержимого: [0]] {} \ u003cnil \ u003e 0 [] false somesite.com:7466 map [] map [] \ u003cnil \ u003e map [] 176.116.100.233:31144 / japi \ u003cnil \ u003cnil \ u003cnil \ u003e 0xc0002a2640} "}

У меня вопрос, почему параметры (такие как req, list) автоматически пишутся с заглавной буквы?

1 Ответ

1 голос
/ 31 мая 2019

HTTP / 1.1 RFC говорит в разделе 4.2 :

Каждое поле заголовка состоит из имени, за которым следуют двоеточие (":") и значение поля. Имена полей не чувствительны к регистру.

Следовательно, использование заглавных букв первого имени в именах заголовков не оказывает побочного эффекта на совместимый HTTP-сервер.

Хотя из термина «параметры», который вы используете, и из части req: "requestinfo" в вашем исходном коде, мне интересно, не пытаетесь ли вы скорее передать эту информацию как данные POST, ошибочно поместив ее в список заголовков , Если это так, то правильный способ их передачи:

Red []

#include %tools.red

url: http://somesite.com:7466/japi

response: write url [
    POST [Content-Type: "application/json"]
    "req=requestinfo&list=This%20is%20a%20pie."  
]

print response  
...