在几行

时间:2017-07-05 22:52:37

标签: java github uri

我正在尝试理解Udacity Android Development课程中涉及的这个类/方法,我很困惑。我想知道String Param_QUERY =“q”是如何工作的,并寻找任何解释。另外,我也对PARAM_SORT和sortBy感到困惑。关于这三个变量及其使用方式的任何解释都将非常感激。谢谢,抱歉任何奇怪的格式。

public class NetworkUtils {

     final static String GITHUB_BASE_URL =
             "https://api.github.com/search/repositories";

     final static String PARAM_QUERY = "q";

     final static String PARAM_SORT = "sort";
     final static String sortBy = "stars";

/**
 * Builds the URL used to query Github.
 *
 * @param githubSearchQuery The keyword that will be queried for.
 * @return The URL to use to query the weather server.
 */
public static URL buildUrl(String githubSearchQuery) {

    Uri builtUri = Uri.parse(GITHUB_BASE_URL).buildUpon()
            .appendQueryParameter(PARAM_QUERY, githubSearchQuery)
            .appendQueryParameter(PARAM_SORT, sortBy)
            .build();

    URL url = null;
    try {
        url = new URL(builtUri.toString());
    } catch (MalformedURLException e) {
        e.printStackTrace();
    }

    return url;
}

2 个答案:

答案 0 :(得分:0)

它会使你的网址看起来像这样,appendQueryParameter会在网址中添加使用过的参数

for (i in 1:1000){
eval(as.symbol(paste0("DF","i")))[eval(as.symbol(paste0("DF","i")))==0]<-1
}

答案 1 :(得分:0)

这不是一个Android问题,但我会解释发生了什么。首先,代码正在做的是构建一个字符串,如:

https://api.github.com/search/repositories?q=githubSearchQuery&sort=stars

这是一个REST端点,当您在GitHub上查询该页面时,它搜索存储库,搜索字符串通过q=githubSearchQuery,当然替换为您的输入,并根据{{1}对结果进行排序按星数排序。现在,Java部分的工作原理如下:

sort=stars

对于简单的情况,使用常量字符串,这会指定appendQueryParameter(PARAM_SORT, sortBy) 部分,并添加任何必需的sort=stars以与其他参数链接。

&

这与appendQueryParameter(PARAM_QUERY, githubSearchQuery) 类似,但由于这是用户输入,因此字符串中可能有空格或其他特殊字符,因此q=githubSearchQuery也会将您的字符串变为有效的HTML查询参数。因此,如果我搜索appendQueryParameter(),我会得到查询参数& = /?

顺便说一句,q=%26+%3D+%2F%3F部分不是标准,只是查询惯例(Google也使用它),而q=是GitHub特有的选项。