hugapi / hug

Embrace the APIs of the future. Hug aims to make developing APIs as simple as possible, but no simpler.
MIT License
6.86k stars 387 forks source link

POST handling hug.types.text? #703

Open arjenpdevries opened 6 years ago

arjenpdevries commented 6 years ago

I want to POST a textarea value to a hug-based service. This works fine:

@hug.post('/api/card')
@hug.local()
def birthday_card(body):
    """Receive birthday card"""
    return {'message': '{0}'.format(body[0])}

But if I declare the input to be of type hug.types.text using

def birthday_card(body:hug.types.text):

the textarea value raises an error "Incorrect text value" and does not get interpreted correctly, returning

{
    "errors": {
        "body": "Invalid text value provided"
    }
}

(I think this worked before I upgraded ubuntu, python and hug, but am unfortunately not 100% sure.)

The relevant form bit:

<textarea name="body" form="card" rows="5" cols="40">
Happy birthday to you
Happy birthday to you
Happy birthday Dear To-o-m
Happy birthday to you
</textarea>
<form action="/api/card" method="post" id="card"> 
Call API: 
<input type="submit" name="body" value="Card" />
</form>
JGabrielGruber commented 5 years ago

Hi @arjenpdevries; You can send JSON to the POST endpoint; So, if you have this JSON:

{
    "textarea": "Heya! Have you read the docs already?"
}

You could send it to a endpoint like that:

@hug.post('/api/card')
@hug.local()
def birthday_card(textarea:hug.types.text):
    """Receive birthday card"""
    return {'message': textarea}