-
Notifications
You must be signed in to change notification settings - Fork 0
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Homeページのフロント部分 #9
Conversation
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
かるくこめんと
backend/api/routers/posts.py
Outdated
from fastapi import Depends, APIRouter, HTTPException, status | ||
from fastapi import Depends, APIRouter, HTTPException, Cookie | ||
from sqlalchemy.exc import SQLAlchemyError | ||
from jose import JWTError |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
ライブラリを使う時にはそのライブラリが適切にサポートされている状態かを確認しましょう。リリース間隔とか issue や PR 頻度など。なお、うちのチームはこのライブラリは開発初期から使っておりましたが、長期的に使うのはリスクだと判断してそのうち切り替える予定です。
backend/api/routers/posts.py
Outdated
|
||
user_id = await get_current_user_id(db, access_token) | ||
post_body = post_schema.CreatePosts(text=post.text, access_token=access_token) | ||
new_post = await post_cruds.create_post(db, post_body, user_id) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Post を作成するのに access token が必要とは思えないので、必要なデータのみを関数に持っていくようにしましょうい。 access_token はあくまでログイン処理やログイン判定に必要なだけで、データ作成には必要ないですよね?
backend/api/schemes/posts.py
Outdated
|
||
class CreatePosts(Posts): |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Posts だと、複数形になっているから Post のリストという意味合いになってしまう。そのため Post だけで良いかと。
backend/api/routers/posts.py
Outdated
@@ -1,11 +1,14 @@ | |||
from fastapi import Depends, APIRouter, HTTPException, status | |||
from fastapi import Depends, APIRouter, HTTPException, Cookie | |||
from sqlalchemy.exc import SQLAlchemyError |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
これ、追加されていますが、使っていないですよね?
<Textarea | ||
{...register('text', { | ||
required: 'テキストを入力してください.', | ||
})} | ||
/> |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
react は詳しくないので、間違っていたらすまないけど。
基本的には Frontend の世界と Backend の世界は別々に Validator を持つべきですね。基本的に RDB に投入するまでエラーになるかどうかわからないことはなるべく避けるべきです。
文字数自体はどこまでやるか次第ですが、全角140文字半角280文字、Blue 加入者には 4000文字であるので、validation はfront にも backend にもかけるべきかと。
@@ -32,6 +31,32 @@ export default function SubmitMordal({ isOpen, onOpen, onClose }) { | |||
} = useForm() | |||
|
|||
const [submitError, setSubmitError] = useState(null) | |||
const submitPost = async (value) => { | |||
try { | |||
const res = await fetch("http://localhost:8000/post", { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
これ、いかなる時でも localhost に投げるの?
if (!res.ok) { | ||
const data = await res.json(); | ||
console.log(data); | ||
throw new Error('サーバーエラーです。後で再試行してください。'); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
validation していない状態なので、201文字以上のデータを送りつけると、そもそも受けつけられないので、文言が間違っている。
setSubmitError('ネットワークエラーです。後で再試行してください。'); | ||
console.error('ネットワークエラー:', err); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
ネットワークエラーかどうかは判断できないのでは。
フロント側から投稿する機能を実装