# API Server 만들기

## POST API 생성&#x20;

./app/\_\_init\_\_.py

```python
from flask import Flask
from flask_restful import Resource, Api

app = Flask(__name__)
api = Api(app)


class CreateBot(Resource):
    def post(self):
        return {'status': 'success'}

    def get(self):
        return {'status': 'get_success'}


api.add_resource(CreateBot, '/bot')
```

./server.py

```python
from burne import app
import optparse

if __name__ == '__main__':
    parser = optparse.OptionParser()
    parser.add_option( '--port', dest='port', default=8000, type='int')
    parser.add_option( '--debug', dest='debug', action='store_true', default=False)

    (options, args) = parser.parse_args()
    app.run(debug=True, port=options.port)
```

### Run Server & Call API

```
$ python server.py
```

```bash
curl -X POST http://localhost:5000/bot
```

### Payload parsing 하기

* `reqparse` 를 사용하여 payload 파싱하기&#x20;

```python
from flask_restful import Resource, Api
from flask_restful import reqparse

## (...)

class CreateBot(Resource):
    def post(self):
        try:
            parser = reqparse.RequestParser()
            parser.add_argument('id', type=str)
            parser.add_argument('config', type=str)
            args = parser.parse_args()

            _id = args['id']
            _config = args['config']

            return {'botId': _id, 'config': _config}
        except Exception as e:
            return {'error': str(e)}

## (...)
```

### payload 와 함께 API call 날려보기 &#x20;

```
curl -X POST \
  http://localhost:5000/bot \
  -H 'content-type: application/json' \
  -d '{
	"id": "bot000",
	"config": "1"
}'
```
