Apollo-link-rest: μƒˆλ‘œμš΄ {args.id} μŠ€νƒ€μΌ 문제

에 λ§Œλ“  2018λ…„ 07μ›” 16일  Β·  5μ½”λ©˜νŠΈ  Β·  좜처: apollographql/apollo-link-rest

μ•ˆλ…•ν•˜μ„Έμš”,

방금 라이브러리λ₯Ό μ—…λ°μ΄νŠΈν–ˆλŠ”λ° μ—…κ·Έλ ˆμ΄λ“œν•˜λŠ” 데 λ¬Έμ œκ°€ μžˆμŠ΅λ‹ˆλ‹€. λ³€κ²½ 없이 κΈ°λŠ₯은 μƒˆ μŠ€νƒ€μΌλ‘œ λ§ˆμ΄κ·Έλ ˆμ΄μ…˜ν•˜λΌλŠ” 경고와 ν•¨κ»˜ μ˜ˆμƒλŒ€λ‘œ μž‘λ™ν•©λ‹ˆλ‹€. μ•„λž˜μ™€ 같이 ν•„μš”ν•œ 변경을 μˆ˜ν–‰ν•˜λ©΄ {args}와 {args.name}이 λͺ¨λ‘ μ •μ˜λ˜μ§€ μ•ŠμŒμ„ μ•Œ 수 μžˆμŠ΅λ‹ˆλ‹€. μ½”λ“œλŠ” λ‹€μŒκ³Ό κ°™μŠ΅λ‹ˆλ‹€.

const restLink = new RestLink({
  uri: 'https://avoindata.prh.fi/bis/v1',
  typePatcher: {
    BusinessPayload: data => ({
      ...data,
      results: data.results.map(business => ({
        __typename: 'Business',
        ...business
      }))
    })
  }
});

const client = new ApolloClient({
  link: restLink,
  cache: new InMemoryCache()
});

const query = gql`
  query($name: String!) {
    companies(name: $name)
      @rest(
        type: "BusinessPayload"
        path: "?totalResults=false&maxResults=10&resultsFrom=0&name={args.name}"
      ) {
      results {
        name
        businessId
      }
    }
  }
`;

// And then call the query:
client.query({ query, variables: { name: value } });

λ‚΄κ°€ λ­”κ°€λ₯Ό λ†“μΉ˜κ³  μžˆμŠ΅λ‹ˆκΉŒ?

blocking bug πŸ› has-reproduction

κ°€μž₯ μœ μš©ν•œ λŒ“κΈ€

v0.4.1μ—μ„œ μˆ˜μ •λ¨: https://github.com/apollographql/apollo-link-rest/releases/tag/v0.4.1 κ·Έλž˜λ„ ν‘œμ‹œλ˜λ©΄ μ•Œλ €μ£Όμ„Έμš”!

λͺ¨λ“  5 λŒ“κΈ€

같은 λ¬Έμ œμž…λ‹ˆλ‹€. μƒˆλ‘œμš΄ {args.id} μŠ€νƒ€μΌμ„ μ‚¬μš©ν•˜μ—¬ μ •μ˜λ˜μ§€ μ•Šμ•˜μŠ΅λ‹ˆλ‹€.

λŒ€λ‹¨ν•œ 캐치 @karensg @haipengz -- 이것은 λ‚˜μ—κ²Œ μ€‘μš”ν•œ μš°μ„ μˆœμœ„μ΄μ§€λ§Œ μ–΄μ œ 이 λ³€κ²½ 사항을 μ™„μ „νžˆ ν…ŒμŠ€νŠΈν•  수 있기 전에 μ€‘λ‹¨λ˜μ—ˆμŠ΅λ‹ˆλ‹€.

@karensg ꡬ문이 μž‘λ™ν•΄μ•Ό ν•˜μ§€λ§Œ(그렇지 μ•Šμ€ λ²„κ·Έμž„), μ €λŠ” APIλ₯Ό μ•½κ°„ λ‹€λ₯΄κ²Œ μ‚¬μš©ν•˜λ„λ‘ μ˜λ„ν–ˆμŠ΅λ‹ˆλ‹€.
λŒ€μ‹ : path: "?totalResults=false&maxResults=10&resultsFrom=0&name={args.name}"
λ‚˜λŠ” 그것을 μ˜λ„ν–ˆλ‹€: path: "?totalResults=false&maxResults=10&resultsFrom=0&{args}"

{args} λ˜λŠ” {args.query.deeper} λŠ” ν‚€ κ²½λ‘œκ°€ κ°€λ¦¬ν‚€λŠ” 개체λ₯Ό 가져와 쿼리 λ¬Έμžμ—΄λ‘œ λ³€ν™˜ν•©λ‹ˆλ‹€. λ”°λΌμ„œ κ·€ν•˜μ˜ μƒν™©μ—μ„œ &{args} λŠ” { name: "foo" } κ°€ &name=foo κ°€ λ©λ‹ˆλ‹€. μ—¬κΈ°μ„œ fooλŠ” μžλ™μœΌλ‘œ encodeURIComponent ν˜ΈμΆœλ©λ‹ˆλ‹€.

λ‚˜λŠ” 이것을 두 번째둜 즉각적인 μ΅œμš°μ„  과제둜 μƒκ°ν•˜μ§€λ§Œ 직μž₯μ—μ„œ ν™”μž¬λ₯Ό μ§„μ••ν•˜κ³  μžˆμœΌλ―€λ‘œ μ˜€ν›„κΉŒμ§€ μž‘μ—…μ„ μˆ˜ν–‰ν•  수 μ—†μŠ΅λ‹ˆλ‹€. 일반적으둜 μ—¬λŸ¬λΆ„μ΄ μ œκ³΅ν•  수 μžˆλŠ” λͺ¨λ“  도움에 κ°μ‚¬λ“œλ¦½λ‹ˆλ‹€. #apollo-link-rest room의 ApolloGraphQL slackμ—μ„œ μ €λ₯Ό 찾을 수 μžˆμŠ΅λ‹ˆλ‹€.

정말 μœ μš©ν•˜κ±°λ‚˜ μˆ˜μ • 속도λ₯Ό 높일 수 μžˆλŠ” ν•œ κ°€μ§€λŠ” μ‚¬μš© 쀑인 각 사둀에 λŒ€ν•œ λ‹¨μœ„ ν…ŒμŠ€νŠΈλ₯Ό μœ„ν•œ λͺ‡ 가지 μ½”λ“œμž…λ‹ˆλ‹€.

v0.4.1μ—μ„œ μˆ˜μ •λ¨: https://github.com/apollographql/apollo-link-rest/releases/tag/v0.4.1 κ·Έλž˜λ„ ν‘œμ‹œλ˜λ©΄ μ•Œλ €μ£Όμ„Έμš”!

@fbartho μˆ˜μ •

λ‹€μ‹œ ν•œλ²ˆ κ°μ‚¬ν•©λ‹ˆλ‹€!
v0.4.1둜 μ—…κ·Έλ ˆμ΄λ“œν•œ ν›„ μƒˆλ‘œμš΄ {args.id} μŠ€νƒ€μΌμ΄ 이제 제 κ²½μš°μ— μž‘λ™ν•˜λ©° 더 이상 μ •μ˜λ˜μ§€ μ•Šμ•˜μŠ΅λ‹ˆλ‹€.

...
const GET_DOG_IMAGES_BY_BREED = gql`
  query breeds ($breed: String!) {
    imagesByBreed(breed: $breed) @rest(
      type: "imagesByBreedResult"
      path: "breed/{args.breed}/images"
      endpoint: "dogApi"
    ) {
      status
      message
    }
  }
`

...
<Query query={GET_DOG_IMAGES_BY_BREED}
    notifyOnNetworkStatusChange
    variables={{ breed: 'hound' }}
 >
  {({ refetch, error, data, networkStatus, }) => {
    expect(error).toBeUndefined()
    expect(data).toBeDefined()
  }}
</Query>
...

이 νŽ˜μ΄μ§€κ°€ 도움이 λ˜μ—ˆλ‚˜μš”?
0 / 5 - 0 λ“±κΈ‰