Oliver Eyton-Williams ee1e8abd87
feat(curriculum): restore seed + solution to Chinese (#40683)
* feat(tools): add seed/solution restore script

* chore(curriculum): remove empty sections' markers

* chore(curriculum): add seed + solution to Chinese

* chore: remove old formatter

* fix: update getChallenges

parse translated challenges separately, without reference to the source

* chore(curriculum): add dashedName to English

* chore(curriculum): add dashedName to Chinese

* refactor: remove unused challenge property 'name'

* fix: relax dashedName requirement

* fix: stray tag

Remove stray `pre` tag from challenge file.

Signed-off-by: nhcarrigan <nhcarrigan@gmail.com>

Co-authored-by: nhcarrigan <nhcarrigan@gmail.com>
2021-01-12 19:31:00 -07:00

2.5 KiB
Raw Blame History

id, title, challengeType, forumTopicId, dashedName
id title challengeType forumTopicId dashedName
587d7fb2367417b2b2512bf6 从客户端获取查询参数输入 2 301512 get-query-parameter-input-from-the-client

--description--

从客户端获取输入的另一种常见方式是使用查询字符串对路由路径中的数据进行编码。查询字符串使用标记 (?) 分隔,并且包含一对field=value。每一对键值使用符号 (&) 分隔。Express 能够从查询字符串中分析这些数据,并且把它放到req.query对象中。有些字符不能在出现在 URL 中,它们在发送前必须以不同的格式进行编码。如果你使用来自 JavaScript 的 API你可以使用特定的方法来编码/解码这些字符。

route_path: '/library'
actual_request_URL: '/library?userId=546&bookId=6754'
req.query: {userId: '546', bookId: '6754'}

--instructions--

构建一个 API ,使用路由挂载GET /name。使用一个 JSON 文件来响应,它的结构是这样的:{ name: 'firstname lastname'}。名字和姓氏参数应该编码在查询参数中,举个例子:?first=firstname&last=lastname.

提示: 在下面的练习中,我们将从相同的/name路由路径中 POST 请求接收数据。如果你愿意,你可以使用app.route(path).get(handler).post(handler)这中写法,此语法允许你在同一路径路由上链接不同的 HTTP 动词处理函数。可以节省一点打字时间,并且可以让代码看起来更清晰。

--hints--

测试 1你的 API 应该使用正确的名称来响应

(getUserInput) =>
  $.get(getUserInput('url') + '/name?first=Mick&last=Jagger').then(
    (data) => {
      assert.equal(
        data.name,
        'Mick Jagger',
        'Test 1: "GET /name" route does not behave as expected'
      );
    },
    (xhr) => {
      throw new Error(xhr.responseText);
    }
  );

测试 2你的 API 应该使用正确的名称来响应

(getUserInput) =>
  $.get(getUserInput('url') + '/name?last=Richards&first=Keith').then(
    (data) => {
      assert.equal(
        data.name,
        'Keith Richards',
        'Test 2: "GET /name" route does not behave as expected'
      );
    },
    (xhr) => {
      throw new Error(xhr.responseText);
    }
  );

--solutions--

/**
  Backend challenges don't need solutions, 
  because they would need to be tested against a full working project. 
  Please check our contributing guidelines to learn more.
*/