V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
• 请不要在回答技术问题时复制粘贴 AI 生成的内容
IMZQZ
V2EX  ›  程序员

如何将一堆 json 文件变成 API 用于接口访问?

  •  
  •   IMZQZ · 1 天前 · 1848 次点击

    我想到的方法,各位看看对不对: 1.先根据 json 内容进行建表 2.将 json 导入数据库 3.写后端代码 4.写接口

    那么问题来了,我不会写代码,怎么办? 有没有什么学习路径或者有 AI 工具帮助做这个项目?

    21 条回复    2025-01-07 22:23:49 +08:00
    hutoer
        1
    hutoer  
       1 天前
    试试 json-server
    txx
        2
    txx  
       1 天前
    json to graphql ?
    OneLiteCore
        3
    OneLiteCore  
       1 天前
    最近刚好做过类似的东西,简单说下:

    1. 用 FastAPI 和 Python 搭建简单的脚手架,用户以 JSONArray 的形式传入 文件名

    2. 接口接收到文件名后从某个硬盘目录上去查找对应的 "文件名.json" 文件

    3. Python 可以直接用 import json 包来解析文件成为 dict ,这一步也算是用来验证 json 的格式是否合法或者做一些校验

    4. 将 dict 转化成 string 作为 body 和 200 状态码返回就行了

    5. 用 docker 和 python 的镜像打包成 .tar 文件发送到你的云服务器

    6. 云服务器 sudo docker load -i XXXX.tar 镜像,然后用 docker compose 配置端口映射到本地的 8000 并启动

    7. 用 Nginx 配置当访问 /api/ 路径的时候,倒向本机的 8000 端口
    TimG
        4
    TimG  
       1 天前 via Android
    用 Python 的 fast-api 吧,入门很简单。代码多少得会写一点,不然错了都不好排查。
    OneLiteCore
        5
    OneLiteCore  
       1 天前
    整个流程还要配置域名、防火墙、http 自带加密和后台校验、json 文件和日志的定期备份啥的。我是自己要开发一个应用的后台所以需要自己处理这一整套的东西。
    OneLiteCore
        6
    OneLiteCore  
       1 天前
    但是如果你不需要逻辑,只是要纯粹可以让客户端可以访问到服务器上的 json 数据的话,我个人觉得最简单的办法就是直接用 Nginx 管理静态的 json 文件数据。甚至数据不敏感而且并不怎么重要的话,你直接扔 gitee 或者 github 上然后有个 Raw 按钮,点击就可以直接下载了。
    janda
        7
    janda  
       1 天前   ❤️ 2
    丢 oss 、直链请求
    PhDLuffy
        8
    PhDLuffy  
       1 天前
    放 github ,直连
    ntedshen
        9
    ntedshen  
       1 天前
    说真的。。。哥们你顶着这个头像问怎么 json 转 api 我还以为是什么数据库在打广告才点进来看的。。。
    结果你是真的不会写?
    ashin
        10
    ashin  
       1 天前 via iPhone
    likeman
        11
    likeman  
       21 小时 49 分钟前
    不需要数据处理的话,直接丢 nginx ,然后请求链接
    maocat
        12
    maocat  
       21 小时 40 分钟前 via Android   ❤️ 1
    啊,有这么麻烦吗,去到目录里面执行
    python -m http.server 不就好了
    junan
        13
    junan  
       21 小时 18 分钟前
    随便找一个在线 mock 的网站
    kiracyan
        14
    kiracyan  
       21 小时 11 分钟前
    直接 python 建个文件访问 直接读取
    IMZQZ
        15
    IMZQZ  
    OP
       20 小时 38 分钟前
    谢谢楼上各位
    下面是一个我的示例 json
    {
    "status": {
    "code": 200,
    "messages": [
    "Success."
    ]
    },
    "data": [
    {
    "articleId": 0,
    "articleSub": 0,
    "freightGroupId": 83900,
    "issueDate": "0001-01-01T00:00:00",
    "effectiveDate": "0001-01-01T00:00:00",
    "hazard": false,
    "articleNotes": [],
    "articles": [
    {
    "articleId": 83980,
    "articleSub": 0,
    "freightGroupId": 83900,
    "class": "100",
    "description": "Billiard or Pocket Billiard (Pool) Tables, with other than stone or slate slabs (beds), KD, or with legs folded to underside of table top, see Notes, items 83982 and 83984, in boxes, crates or Package 1317",
    "issueDate": "0001-01-01T00:00:00Z",
    "effectiveDate": "0001-01-01T00:00:00Z",
    "hazard": false,
    "articleNotes": [
    {
    "noteReferenceId": 83982,
    "text": "NOTE-With each table there may be included not more than four cues and the equipment necessary for playing."
    }
    ],
    "articles": []
    },
    {
    "articleId": 83995,
    "articleSub": 0,
    "freightGroupId": 83900,
    "class": "77.5",
    "description": "Bubble Forming Compounds, plastic, see Note, item 83996, in boxes",
    "issueDate": "0001-01-01T00:00:00Z",
    "effectiveDate": "0001-01-01T00:00:00Z",
    "hazard": false,
    "articleNotes": [
    {
    "noteReferenceId": 83996,
    "text": "NOTE-One blowing tube may be included for each inner container."
    }
    ],
    "articles": []
    },
    {
    "articleId": 84060,
    "articleSub": 0,
    "freightGroupId": 83900,
    "class": "85",
    "description": "Dart Games, consisting of steel tipped darts and targets, in boxes",
    "issueDate": "0001-01-01T00:00:00Z",
    "effectiveDate": "0001-01-01T00:00:00Z",
    "hazard": false,
    "articleNotes": [],
    "articles": []
    }
    ]
    }
    ]
    }
    IMZQZ
        16
    IMZQZ  
    OP
       20 小时 38 分钟前
    @ashin 谢谢 我去研究下
    IMZQZ
        17
    IMZQZ  
    OP
       20 小时 37 分钟前
    @OneLiteCore 昨天我也看了 fastAPI 还在尝试中
    IMZQZ
        18
    IMZQZ  
    OP
       20 小时 36 分钟前
    @OneLiteCore 不需要那么复杂 其实就是为了让别人通过关键词 搜索所有的 json 文件 然后将关键词相关的内容 返回就行
    vZexc0m
        19
    vZexc0m  
       20 小时 34 分钟前
    直接放对象存储上得了。
    caoyang5689
        20
    caoyang5689  
       19 小时 5 分钟前
    @likeman 确实, 不需要数据处理的话用这个就行, 划分数据的话可以拆分文件.
    llsquaer
        21
    llsquaer  
       8 小时 14 分钟前
    你这个又不需要逻辑的,就是返回 json 文件。直接 Nginx 完事

    ```
    server {
    listen 80; # 监听 80 端口
    server_name yourdomain.com; # 替换为你的域名,没有就删除这行
    root /var/www; # 文件的目录

    # 配置 /json/ 路径下的请求处理
    location /json/ {
    default_type application/json; # 设置响应的内容类型为 JSON
    }

    # 其他 location 块和配置...
    }
    ```
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1064 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 21ms · UTC 22:38 · PVG 06:38 · LAX 14:38 · JFK 17:38
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.