[vlc-devel] Regarding the HTTP POST implementation

Steve Lhomme robux4 at ycbcr.xyz
Mon Oct 7 08:14:17 CEST 2019


On 2019-10-06 17:20, Aniketh Girish wrote:
>     AFAIR, some devs wanted POST for some use cases, but I cannot
>     comment on their
>     behalf. 
> 
> 
> But if you wish to share what think off, I am more than happy to listen 
> to :)
> 
>     There is currently one POST usage in the audioscrobbler module.
> 
> 
> I see that.  Get's the payload and does a TLS_write()..
> 
> 
>      > Just another question that I had, why working on the
>     implementation of
>      > different HTTP methods differently?
> 
>     Useful APIs are rather different for GET than POST.
> 
>      > ie, why implementing PUT separately, and POST separately?
> 
>     PUT is used to write a file over the network.
>     POST is more of a toolkit for request/response messaging.
> 
>     The usage patterns and thus the API designs would be quite different.
> 
> 
> I understand.  But don't you think the HTTP functionalities should be 
> implemented as it is standardised to and change the way we use it rather 
> than developing HTTP functionalities for some specific use cases? What I 
> meant is that, design the HTTP API as meant, that is, GET gets us 
> something, POST sends over something etc. Thus, all the HTTP functions 
> does what it is supposed to do and the modules that use these methods 
> should design their callbacks and functions in a way that they can 
> incorporate the use cases within the module itself.  Also, doing a 
> TLS_write() to suggest HTTPS send a request with or without payload 
> seems confusing too. But what I suggest is an API, like 
> http_send_req(conn, req, body, bool TLS). With that bool, we can turn on 
> and off the TLS option??
> 
> Because I feel this way, we will never stop refactoring core design of 
> HTTP every time. I see there is already an old HTTP access and a new 
> one(access/HTTP).
> 
> What do you think? I have a small design document as well for this: 
> https://docs.google.com/document/d/1zenwBn_K8kb_hyNin5UALdOpZq6tBaHqkuR5WUMQ4Ko/edit?usp=sharing

That seems OK. I would merge the send_with_body() and send(). The body 
part being NULL if not needed.

The body part would be better handled as a feeding callback. The payload 
case being a simple use case with a basic callback. A callback might 
allow doing chunked transfer (low latency HLS/DASH).

It might also be good to have a callback providing extra HTTP headers 
(maybe Icecast could use that, OAuth authentication might be another use 
case).


More information about the vlc-devel mailing list