graphqlタイトルへのタグの追加
5082 ワード
ログイン/ログアウト
1)ログイン要求
2)authToken/refreshTokenの発行
3)authTokenはreduceに保存し、refreshTokenはクッキーに保存する
4)トークンを
Authorization : `Bearer ${token}`
の形で検証が必要な要求ヘッダに送信する5)authTokenを定期的にチェックして期限切れかどうかを確認し、期限切れの場合はrefreshTokenをサーバに再送信し、新しいauthToken
見出しにtokenを追加
CORSエラーのため、クライアント作成時に認証情報設定を追加
import React from "react";
import { render } from "react-dom";
import { BrowserRouter } from "react-router-dom";
import App from "./src/App";
import {
ApolloClient,
ApolloProvider,
HttpLink,
InMemoryCache,
} from "@apollo/client";
import { createUploadLink } from "apollo-upload-client";
// 파일 업로드를 해야해서 createUploadLink 사용.
const httpLink = createUploadLink({
uri: "graphql 주소",
credentials: "same-origin", //CORS에러 처리하기 위해 추가
});
const client = new ApolloClient({
link: httpLink,
cache: new InMemoryCache(),
});// 클라이언트 인스턴스 생성
render(
<ApolloProvider client={client}>//프로바이더에 클라이언트 제공
<BrowserRouter>
<App />
</BrowserRouter>
</ApolloProvider>,
document.querySelector("#root")
);
graphsqlリクエスト送信でヘッダファイルを設定する(context->ヘッダファイル->keyname:token)
const [posting, { loading, error, data }] = useMutation(POSTING, {
context: {
headers: {
authorization: `Bearer ${window.localStorage.getItem("authToken")}`,
"Content-Type": "application/json",
},
},
});
追加点(1回に複数の音楽/クエリーを要求)-未解決のXXXを参照してください
1. @export decorator
(field@export(as:“variablename”)形式)(https://github.com/apollographql/apollo-client/issues/6634)
const UPLOAD = gql`
mutation upload($file: Upload!) {
upload(file: $file) {
realName
fileId @export(as: "thumbnail")
originalName
}
}
`;
const POSTING = gql`
mutation createPost(
$title: String!
$tags: [String]!
$content: String
$thumbnail: ID
) {
createPost(
input: {
title: $title
tags: $tags
content: $content
thumbnail: $thumbnail
}
) {
postId
tags
}
}
`;
2.複数のクエリー/音楽を同時に実行
gqlに2つの音楽を入れてrequestを送信できるようになりました.
gql文に2つの音楽クリップを同時に追加して実行しようとしたが、以下のエラーが発生し、実行されなかった.
react-apollo only supports a query, subscription, or a mutation per HOC. [object Object] had 0 queries, 0 subscriptions and 2 mutations. You can use 'compose' to join multiple operation types to a component
react-apolloは、HOCごとに1つの音楽/クエリー/サブスクリプトをサポートします.次に、複数を同時に実行する場合は、「compose」を使用して複数のクエリー/音楽/サブスクリプトをマージできます.
-だから私はcomposeを探しています.今は具体的な使い方が分かりません.完璧な後処理!
解決策
mutaion MUTAIONNAME($variableA:typeA,$varibleB:typeB){
A(variable:$variableA){
data
}
B(variable:$variableB){
data
}
}
上記のフォーマットでリクエストが正常に実行されるだけです.私が犯した過ちはAとBの前にも突然変異を加えたことだ.もともと内部に変異/queryをつけないので、どんな精神が加わったのか分かりません.
Reference
この問題について(graphqlタイトルへのタグの追加), 我々は、より多くの情報をここで見つけました https://velog.io/@brill_be/graphql-headerテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol