Создание API только с Google App Engine, webapp2 и Python? - PullRequest
0 голосов
/ 25 августа 2018

Можно ли создать API, используя только webapp2 и Python в Google App Engine?

Например, давайте мой маршрут /post/123 обрабатывается этим RequestHandler:

class ShowPosts(webapp2.RequestHandler):
    def get(self):
        posts = Post.query().fetch()
        # return the post as data (JSON) here as response 

Когда клиент делает повторный запрос к /post/123, ему может быть возвращен объект данных (вместо отрисованной html-страницы).

Это возможно или рекомендуется?

Ответы [ 2 ]

0 голосов
/ 26 августа 2018

Вы можете построить список Python или объект dict из запроса, затем отправить его как объект JSON и отправить его в качестве ответа. Попробуйте что-то вроде этого:

import json

posts     = Post.query()
post_json = []

for post in posts:
    post_dict = {
        'name' : post.name,
        'city' : post.city,
        'state': post.state
    }
    post_json.append( post_dict )

return json.dumps(post_json)

ОБНОВЛЕНИЕ: ОП запросили, например, с POST метод:

import json

class ShowPosts(webapp2.RequestHandler):
    def get(self):
        posts = Post.query()
        post_json   = []

        for post in posts:
            post_dict = {
                'name' : post.name,
                'city' : post.city,
                'state': post.state
            }

            post_json.append( post_dict )

        return json.dumps(post_json) 

    def post(self):
        posts = Post.query()
        post_json   = []

        for post in posts:
            post_dict = {
                'name' : post.name,
                'city' : post.city,
                'state': post.state
            }

            post_json.append( post_dict )

        post_json.append(
            {
                'posted_name': self.request.get('name'),
                'posted_msg': self.request.get('msg')
            }
        )
        return json.dumps(post_json) 
0 голосов
/ 26 августа 2018

Вам не нужно возвращать HTML-страницу.Вы можете вернуть JSON или даже просто строку, так как это ваш код, который вы размещаете.Вы можете легко отправить URL с помощью своего App Engine, который может ответить на вызов REST.

...