Jump to content

Recommended Posts

Posted

Добрый день!

При разработке своего API заметил такую особенность

1. делаю простой проект, в ServerModule указываю такой код

void __fastcall TUniServerModule::UniGUIServerModuleHTTPCommand(TIdHTTPRequestInfo *ARequestInfo,
                    TIdHTTPResponseInfo *AResponseInfo, bool &Handled)

{
        if(ARequestInfo->Document == "/ss")
        {
            AResponseInfo->ResponseNo = 404;
            AResponseInfo->ContentType = "application/json";
            AResponseInfo->ContentText =  "{\"option\": \"error-1\", \"NodeId\": \"" + String(NodeId) + "\"}";
            Handled = true;
        }

}

2. запускаю hyper_service и пытаюсь вызвать http://localhost:8077/ss

в ответ получаю вот такое сообщение, а ожидал в ответе получить такую строку {"option": "error-1", "NodeId": "1"}

image.png.59a40ed6f1abf3b92d521d136a0bb4d0.png

 

если же я меняю ResponseNo на 200

AResponseInfo->ResponseNo = 200;

далее запускаю hyper_service и вызваю http://localhost:8077/ss, то все нормально

 

image.png.acbd76d4dffc5bf695ff8481ec4e8fd6.png

 

Если не использовать hyper_service, просто запустить exe, то все нормально, т.е. такая аномалия возникает именно при использовании hyper_service

Так же вместо браузера вызов повторил в postman, результат такой же

Что мне нужно сделать чтобы при указании ResponseNo = 404 тоже возвращался json ?

использую версию uni-1.95.0.1603 

 

 

Posted

Добрый вечер!

Если вы хотите вернуть JSON-ошибку, но не хотите, чтобы HyperServer вмешивался —
используйте код 200, но добавляйте флаг ошибки в JSON, например:

AResponseInfo->ResponseNo = 200;
AResponseInfo->ContentType = "application/json";
AResponseInfo->ContentText = "{\"success\": false, \"error\": \"not_found\"}";
Handled = true;

 

Posted
3 hours ago, Sherzod said:

Добрый вечер!

Если вы хотите вернуть JSON-ошибку, но не хотите, чтобы HyperServer вмешивался —
используйте код 200, но добавляйте флаг ошибки в JSON, например:

AResponseInfo->ResponseNo = 200;
AResponseInfo->ContentType = "application/json";
AResponseInfo->ContentText = "{\"success\": false, \"error\": \"not_found\"}";
Handled = true;

 

А с HyperServer так и было задумано, что он вмешивается ?

Posted

Добрый день!

Sherzod, не хочу показаться назойливым, но если все таки потребуется, чтобы при ResponseNo = 4?? или 5?? нужно возвращать json

планируется ли какая то настройка в HyperServer в будущем, чтобы было опционально или мне проще разработать отдельный сервис, который будет работать только на прием API запросов ?

Может на просторах форума были подобные вопросы и какое то решение от разработчиков ?

я пока сам не могу найти правильное решение на просторах форума

Posted

Sherzod, если все таки нужно, чтобы при ResponseNo = 4?? или 5?? возвращался json

Планируется ли какая то настройка в HyperServer в будущем, чтобы было опционально ?

Может на просторах форума были подобные вопросы и какое то решение от разработчиков ?

 

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...