http icon indicating copy to clipboard operation
http copied to clipboard

Request string reprenetations prints non-existing field

Open DifferentialOrange opened this issue 2 years ago • 0 comments

tostring(req) invokes request_tostring function, which does the following step: https://github.com/tarantool/http/blob/6be78efcb2848d740b5c1c16511953a05b328e82/http/server.lua#L170

But request does not have a body attribute. response does. String representation of a request always ends with empty lines since .body == nil.

local log = require('log')

local http_server = require('http.server')

box.cfg{}

local httpd = http_server.new('127.0.0.1', 8081)
httpd:route(
    { path = '/hello', method = 'POST' }, function(req)
        local _ = req:json() -- If removed, result is the same.
        log.info(req.body)
        log.info(tostring(req))
        return req:render{text = 'OK'}
    end)
httpd:start()
curl -X POST localhost:8081/hello?a=a -d '{"sdfs":"dfdfsfs"}'
2023-09-18 10:31:12.506 [1212600] main/114/http/127.0.0.1:60846/http.server I> POST /hello?a=a
2023-09-18 10:31:12.506 [1212600] main/114/http/127.0.0.1:60846/. I> 
2023-09-18 10:31:12.506 [1212600] main/114/http/127.0.0.1:60846/. I> POST /hello?a=a HTTP/1.1
Host: localhost:8081
Content-type: application/x-www-form-urlencoded
Content-length: 18
Accept: */*
User-agent: curl/7.81.0


DifferentialOrange avatar Sep 18 '23 07:09 DifferentialOrange