简体   繁体   English

使用 Javascript 将 URL 参数发送到 Python REST API

[英]Sending URL Parameters to a Python REST API using Javascript

I am trying to send URL parameters to an API I wrote on Python, using Javascript.我正在尝试使用 Javascript 将 URL 参数发送到我在 Python 上编写的 API。 My Javascript code is as follows:我的Javascript代码如下:

function createGetRequest() {
        var request = new XMLHttpRequest();
        request.open('GET', 'some-link/api/', true);
        request.onload = function() {
            var data = JSON.parse(this.response);
            document.getElementById("idk").innerHTML = data.news.entry_news_item_title + "</br>" + data.news.entry_news_item_snippet + "</br>"
            + data.news.entry_news_item_url;
        }
        request.send();
    }

and my Python REST API code is as follows;我的 Python REST API 代码如下;

def index():
NewsFeed = feedparser.parse("https://trends.google.com.tr/trends/trendingsearches/daily/rss?geo=TR")

entry = NewsFeed.entries[0]

return {"news" : {"Status" : "OK",
                              "item" : entry['title'],
                              "entry_news_item_title" : entry['ht_news_item_title'],
                              "entry_news_item_snippet" : entry['ht_news_item_snippet'],
                              "entry_news_item_url" : entry['ht_news_item_url']}}

I want to be able to get the index of the entry from the user and then return the corresponding entry.我希望能够从用户那里获取条目的索引,然后返回相应的条目。 In other words, I want the entry = NewsFeed.entries[0] part to accept a variable rather than a 0. I have tried everything online yet I can't seem to figure it out.换句话说,我希望entry = NewsFeed.entries[0]部分接受一个变量而不是 0。我已经尝试了所有在线方法,但似乎无法弄清楚。

In your JavaScript code add entry to GET request as follows:在您的 JavaScript 代码中,向 GET 请求添加条目,如下所示:

function createGetRequest() {
    // code to get number/id you are clicking on
    entry_id = getEntryId();
    var request = new XMLHttpRequest();
    //After question marks you can input your GET request parameters
    request.open('GET', `some-link/api/?entry=${entry_id}`, true); //I am using backticks as interpolation  
    request.onload = function() {
        var data = JSON.parse(this.response);
        document.getElementById("idk").innerHTML = data.news.entry_news_item_title + "</br>" + data.news.entry_news_item_snippet + "</br>"
            + data.news.entry_news_item_url;
        }
        request.send();
    }

In you Python code you need just to collect get parameters from request string as follows:在您的 Python 代码中,您只需要从请求字符串中收集获取参数,如下所示:

# Add the request parameter to the function
def index(request):
    NewsFeed = feedparser.parse("https://trends.google.com.tr/trends/trendingsearches/daily/rss?geo=TR")
    # Get the parameter from request
    # By using get function if you do not have a parameter with given key it will return None 
    entry_id = request.GET.get('entry')
    if entry_id:
        entry = NewsFeed.entries[entry_id]

        return {"news" : {"Status" : "OK",
                          "item" : entry['title'],
                          "entry_news_item_title" : entry['ht_news_item_title'],
                          "entry_news_item_snippet" : entry['ht_news_item_snippet'],
                          "entry_news_item_url" : entry['ht_news_item_url']}}
    else:
        # Handle bad request
        return {"news":None}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM