国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Web開發(fā)模式、API接口、restful規(guī)范、序列化和反序列化、drf安裝和快速使用、路由轉(zhuǎn)換器(復(fù)習(xí))

這篇具有很好參考價值的文章主要介紹了Web開發(fā)模式、API接口、restful規(guī)范、序列化和反序列化、drf安裝和快速使用、路由轉(zhuǎn)換器(復(fù)習(xí))。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

一 Web開發(fā)模式
1. 前后端混合開發(fā)模式
2.前后端分離開發(fā)模式
二 API接口
三 restful規(guī)范
四 序列化和反序列化
五 drf安裝和快速使用

一 Web開發(fā)模式

1. 前后端混合開發(fā)模式

前后端混合開發(fā)模式是一種開發(fā)方式,將前端和后端的開發(fā)工作結(jié)合在一起,以加快項目的開發(fā)速度和
提高協(xié)作效率。這種模式通常用于快速原型開發(fā)、小型項目或敏捷開發(fā)中。

在前后端混合開發(fā)模式中,前端和后端開發(fā)人員緊密合作,共同制定項目需求、設(shè)計界面和編寫代碼。
具體來說,這種模式有以下特點:

1.交叉開發(fā):前端和后端開發(fā)人員在同一時間內(nèi)并行進行開發(fā),
	而不是先完成一個部分再進行另一個部分的開發(fā)。
2.緊密協(xié)作:前端和后端開發(fā)人員之間需要密切合作,共同解決問題,制定接口規(guī)范,
	并確保前后端之間的數(shù)據(jù)交互和功能協(xié)調(diào)一致。
3.接口規(guī)范:在前后端混合開發(fā)中,明確的接口規(guī)范尤為重要。
	前端和后端需要約定好數(shù)據(jù)傳輸?shù)母袷?、接口命名和參?shù)等。
4.快速迭代:由于前后端同時進行開發(fā),可以更快地進行迭代和調(diào)整,及時響應(yīng)變化的需求。
5.敏捷開發(fā):這種開發(fā)模式適用于敏捷開發(fā)流程,可以在項目開發(fā)周期內(nèi)頻繁地進行需求變更和更新。

然而,前后端混合開發(fā)模式也需要注意一些問題,例如接口不穩(wěn)定可能導(dǎo)致前后端頻繁修改,
需要嚴格的接口文檔和版本管理。此外,項目的復(fù)雜性和團隊的規(guī)模也會影響這種開發(fā)模式的適用性。

Web開發(fā)模式、API接口、restful規(guī)范、序列化和反序列化、drf安裝和快速使用、路由轉(zhuǎn)換器(復(fù)習(xí)),django,python01,前端,restful,狀態(tài)模式,django,python,pycharm,windows

2.前后端分離開發(fā)模式

前后端分離開發(fā)模式是一種軟件開發(fā)方式,其中前端和后端的開發(fā)工作分開進行,彼此解耦,
通過接口進行數(shù)據(jù)交互。這種模式旨在提高開發(fā)效率、降低耦合度,并允許不同團隊專注于各自領(lǐng)域的開發(fā)。

在前后端分離開發(fā)模式中,前端和后端開發(fā)人員可以使用不同的編程語言、框架和技術(shù)來進行開發(fā)。
前端負責(zé)構(gòu)建用戶界面、交互和用戶體驗,后端負責(zé)處理業(yè)務(wù)邏輯、數(shù)據(jù)庫操作和提供數(shù)據(jù)接口。

主要特點包括:
1. **松耦合**:前后端之間通過接口進行數(shù)據(jù)交互,實現(xiàn)了松耦合的架構(gòu),使得前后端團隊可以獨立開發(fā)和更新。
2. **獨立開發(fā)**:前端和后端可以同時進行開發(fā),不會相互阻塞,從而加快項目的開發(fā)進度。
3. **技術(shù)多樣性**:前端和后端可以選擇最適合自己的技術(shù)棧,使得團隊可以根據(jù)需求靈活選擇合適的工具。
4. **提高效率**:前端和后端開發(fā)人員專注于各自領(lǐng)域的開發(fā),提高了效率和專注度。
5. **維護方便**:由于前后端分離,當需求變更或修復(fù)問題時,只需修改相應(yīng)的模塊,不會影響到整個系統(tǒng)。
6. **適合團隊合作**:不同團隊可以并行開發(fā),有助于團隊協(xié)作和項目管理。

然而,前后端分離也需要注意接口設(shè)計的合理性、數(shù)據(jù)傳輸?shù)陌踩砸约敖涌谖臋n的編寫和維護等問題。同時,這種模式對項目的規(guī)劃和架構(gòu)設(shè)計有一定的要求,以確保前后端之間的協(xié)同順暢。

Web開發(fā)模式、API接口、restful規(guī)范、序列化和反序列化、drf安裝和快速使用、路由轉(zhuǎn)換器(復(fù)習(xí)),django,python01,前端,restful,狀態(tài)模式,django,python,pycharm,windows文章來源地址http://www.zghlxwxcb.cn/news/detail-682712.html

二 API接口

為了在團隊內(nèi)部形成共識、防止個人習(xí)慣差異引起的混亂,我們需要找到一種大家都覺得很好的接口實現(xiàn)規(guī)范,
而且這種規(guī)范能夠讓后端寫的接口,用途一目了然,減少雙方之間的合作成本

-api接口:通過網(wǎng)絡(luò),規(guī)定了前后臺信息交互規(guī)則的url鏈接,也就是前后臺信息交互的媒介
	-https://www.baidu.com/books/--->json 格式數(shù)據(jù)---》接口
    -https://www.cnblogs.com/liuqingzheng/articles/17400599.html---》返回界面
        
-url和接口的區(qū)別:Web API接口和一般的url鏈接還是有區(qū)別的,Web API接口簡單概括有下面四大特點
	-1.url:長得像返回數(shù)據(jù)的url鏈接
    	https://api.map.baidu.com/place/v2/search
    -2.請求方式:get、post、put、patch、delete
		采用get方式請求上方接口
	-3.請求參數(shù):json或xml格式的key-value類型數(shù)據(jù)
        ak:6E823f587c95f0148c19993539b99295
        region:上海
        query:肯德基
        output:json
    -4.響應(yīng)結(jié)果:json或xml格式的數(shù)據(jù)
    	-https://api.map.baidu.com/place/v2/search?ak=6E823f587c95f0148c19993539b99295&region=%E4%B8%8A%E6%B5%B7&query=%E8%82%AF%E5%BE%B7%E5%9F%BA&output=json

-典型的api接口長這樣
	-url地址
    -有請求方式
    -攜帶參數(shù)
    -返回格式是json,xml

-前端不同編碼格式:
	-urlencoded: body體中 :username=lqz&password=123  django的request.POST取出值
    -json: body體中 :{"username":"lqz","password":"123"}  django的request.POST取不出值
    -form-data:body中格式固定:數(shù)據(jù)部分和文件部分--》request.POST能取出數(shù)據(jù),取不出文件,文件都是從
    	'----------------------------789048583058585187025897\r\nContent-Disposition: form-data; name="username"\r\n\r\nlqz\r\n文件二進制


-django中的文件對象和原來的文件對象
	-django:from django.core.files.uploadedfile import InMemoryUploadedFile
    -原生文件:_io.BufferedWriter
    -django中文件類沒有繼承原生文件類,但是有原生文件類所有方法

-裝飾器模版
def warpper_request(func):
    def inner( *args, **kwargs):
        # 在執(zhí)行被裝飾函數(shù)前執(zhí)行
        res = func(*args, **kwargs)
        # 在執(zhí)行被裝飾函數(shù)后執(zhí)行
        return res
    return inner

三 restful規(guī)范

1 前后端分離要寫接口---》api接口---》接口測試工具postman

2 restful規(guī)范是什么,如何來的?
	-一種定義Web API接口的設(shè)計風(fēng)格,尤其適用于前后端分離的應(yīng)用模式中 的規(guī)范
    -Roy Fielding的博士論文提出的
3 以后寫接口,大致都要遵循一個規(guī)范,restful規(guī)范---10---1 數(shù)據(jù)的安全保障-》url鏈接一般都采用https協(xié)議進行傳輸--》它比http安全
	-2 接口特征表現(xiàn)--》url中帶api標識
    	-https://api.baidu.com/books/
        -https://www.baidu.com/api/books/
            
    -3 多數(shù)據(jù)版本共存--》url中帶版本信息
    	https://api.baidu.com/v1/books
		https://www.baidu.com/api/v2/books
            
    -4 數(shù)據(jù)即是資源,均使用名詞(可復(fù)數(shù))-->前后臺交互,交互的數(shù)據(jù)稱之為資源
    	-數(shù)據(jù)即資源,前后端交互的數(shù)據(jù)稱之為資源,url盡量使用名字
    	-https://127.0.0.1/api/v1/books/  -->表示對圖書操作:增加,刪除,查詢,修改,都用這一個地址
        -https://127.0.0.1/api/v1/get_all_books/ # 不符合restful規(guī)范
        -https://127.0.0.1/api/v1/delete_books/# 不符合restful規(guī)范
   -5 資源操作由請求方式?jīng)Q定
		-get 請求獲取數(shù)據(jù)(獲取所有,獲取單條)
    	-post 新增數(shù)據(jù)
        -put 修改數(shù)據(jù)
        -delete 刪除數(shù)據(jù)
        https://api.baidu.com/books - get請求:獲取所有書
        https://api.baidu.com/books/1 - get請求:獲取主鍵為1的書
        https://api.baidu.com/books - post請求:新增一本書書
        https://api.baidu.com/books/1 - put請求:整體修改主鍵為1的書
        https://api.baidu.com/books/1 - delete請求:刪除主鍵為1的書
            
            
  -6  請求地址中帶過濾條件---》只針對于搜索所有接口
	https://api.example.com/v1/zoos?limit=10:指定返回記錄的數(shù)量
	https://api.example.com/v1/zoos?offset=10:指定返回記錄的開始位置
	https://api.example.com/v1/zoos?page=2&per_page=100:指定第幾頁,以及每頁的記錄數(shù)
	https://api.example.com/v1/zoos?sortby=name&order=asc:指定返回結(jié)果按照哪個屬性排序,以及排序順序
	https://api.example.com/v1/zoos?animal_type_id=1:指定篩選條件
    
  -7 響應(yīng)狀態(tài)碼(兩層)
	-http響應(yīng)狀態(tài)碼: 1xx,2xx,3xx,4xx,5xx:https://www.sohu.com/a/278045231_120014184
    	-404403405
        -301302
        -1xx表示請求正在處理---》前端一般看不到
        -2xx 表示請求處理成功--》經(jīng)??吹?        	-201200有什么區(qū)別
        -3xx:重定向
        -4xx:客戶端錯誤
        -5xx:服務(wù)端出錯
        
    -成功都返回200,而在響應(yīng)體中帶 狀態(tài)碼--->code不同公司就不一樣
    	{
            "code": 101,
            "msg": "用戶名或密碼錯誤"
        }
        
    -補充一:mysql 錯誤操作都會有個 數(shù)字(10060)  文字解釋
    -補充二:
    -https://open.weibo.com/wiki/Error_code
    
 -8 響應(yīng)中帶錯誤信息
	{
            "code": 101,
            "msg": "用戶名或密碼錯誤"
        }
    
 -9 不同操作,返回格式符合如下標準
	GET /collection:返回資源對象的列表(數(shù)組)
    	# [{name:西游記,price:19},{name:三國,price:19}]
    GET /collection/resource:返回單個資源對象 
    	# {name:三國,price:19}
    POST /collection:返回新生成的資源對象
    	# {name:三國,price:19}
    PUT /collection/resource:返回完整的資源對象
    	# {name:三國演繹,price:19}
    DELETE /collection/resource:返回一個空文檔
    	#   
        
    ---》大家都這么做
    {
        code:100
        msg:查詢成功
        restult:[{name:西游記,price:19},{name:三國,price:19}]
    }
    
    
 -10 響應(yīng)中帶鏈接
	Hypermedia API,RESTful API最好做到Hypermedia,即返回結(jié)果中提供鏈接,
	連向其他API方法,使得用戶不查文檔,也知道下一步應(yīng)該做什么
{
  	"status": 0,
  	"msg": "ok",
  	"results":[
        {
            "name":"肯德基(羅餐廳)",
            "img": "https://image.baidu.com/kfc/001.png"
        }
      	...
		]
}

四 序列化和反序列化

序列化: 數(shù)據(jù)轉(zhuǎn)換格式
序列化分兩個階段:
	-序列化:把我們識別的數(shù)據(jù)轉(zhuǎn)換成指定的格式提供給別人
    -反序列化:把別人提供的數(shù)據(jù)轉(zhuǎn)換/還原成我們需要的格式

序列化: 把我們識別的數(shù)據(jù)轉(zhuǎn)換成指定的格式提供給別人。

例如:我們在django中獲取到的數(shù)據(jù)默認是模型對象,但是模型對象數(shù)據(jù)無法直接提供給前端或別的平臺使用,
所以我們需要把數(shù)據(jù)進行序列化,變成字符串或者json數(shù)據(jù),提供給別人。

反序列化:把別人提供的數(shù)據(jù)轉(zhuǎn)換/還原成我們需要的格式。

例如:前端js提供過來的json數(shù)據(jù),對于python而言就是字符串,我們需要進行反序列化換成模型類對象,
這樣我們才能把數(shù)據(jù)保存到數(shù)據(jù)庫中

五 drf安裝和快速使用

基于django編寫符合restful規(guī)范的接口了
	假設(shè)以 Book 表為例,寫它的5個接口
		-1 查詢所有
	    -2 新增一條
	    -3 修改一條
	    -4 刪除一條
	    -5 查詢一條
    
以下是使用原生django編寫:
########### book的接口寫成CBV更好, 先用原生Django寫
'''
    http://127.0.0.1/books/   get查詢所有
    http://127.0.0.1/books/   post新增一條
    
    http://127.0.0.1/books/id   put新增一條
    http://127.0.0.1/books/id   delete新增一條
    http://127.0.0.1/books/id   get查詢一條
    
'''

from django.views import View
from .models import Book


class BookView(View):
    def get(self, request):
        books = Book.objects.all()  # 查詢出來的是queryset對象,不是列表
        books_list = []
        for item in books:
            books_list.append({'name': item.name, 'price': item.price})
        res = {'code': 200, 'msg': '查詢成功', 'data': books_list}

        return JsonResponse(res)

    def post(self, request):  # 新增一條數(shù)據(jù)
        name = request.POST.get('name')
        price = request.POST.get('price')
        if name and price:
            Book.objects.create(name=name, price=price)
            res = {'code': 200, 'msg': '數(shù)據(jù)添加成功'}
        else:
            res = {'code': 400, 'msg': '數(shù)據(jù)添加失敗,請認真核對參數(shù)'}

        return JsonResponse(res)


class BookDetailView(View):
    def put(self, request, pk):
        int_data_dict = json.loads(request.body)
        name = int_data_dict.get('name')
        price = int_data_dict.get('price')

        book = Book.objects.get(pk=pk)
        book.name = name
        book.price = price
        book.save()

        return JsonResponse({'code': 100, 'msg': '查詢成功', 'data': {'name': book.name, 'price': book.price}})

    def get(self, request, pk):
        book_obj = Book.objects.filter(pk=pk).first()
        if book_obj:
            res = {'code': 200, 'msg': f'圖書id為{book_obj.pk}的數(shù)據(jù)查詢成功',
                   'data': {'name': book_obj.name, 'price': book_obj.price}}
        else:
            res = {'code': 1006, 'msg': '暫無你查詢的數(shù)據(jù)'}

        return JsonResponse(res)

    def delete(self, request, pk):
        book = Book.objects.filter(pk=pk).first()
        if book:
            book.delete()
            res = {'code': 200, 'msg': f'圖書id為{pk}的數(shù)據(jù)查詢刪除成功'}
        else:
            res = {'code': 1007, 'msg': '你要刪除的數(shù)據(jù)不存在'}

        return JsonResponse(res)



注意:djangorestframework: drf, django的一個第三app---》方便我們快速實現(xiàn)符合restful規(guī)范的接口

*****drf快速寫接口**********
使用步驟:
	1 安裝模塊
    	1 django 是2版本,用不了drf最新(適當降版本),他會卸載django---》裝最新4.x
        2 djagno 3.1.12 可以使用drf最新	
        	-django:3.1.12
            -drf:3.14.0
                
    2 在app中注冊
        INSTALLED_APPS = [
            'rest_framework',  # 一定不要忘了加  ,
        ]
    	
    3 寫路由
    from rest_framework.routers import DefaultRouter
    router = DefaultRouter()
    router.register('books', BookView, 'books')
    
    urlpatterns += router.urls
    4 寫視圖類
    from rest_framework.viewsets import ModelViewSet
    from .serializer import BookSerializer
    class BookView(ModelViewSet):
        queryset = Book.objects.all()
        serializer_class = BookSerializer
    5 寫序列化類
    class BookSerializer(serializers.ModelSerializer):
    class Meta:
        model = Book
        fields = "__all__"

class User(models.Model):
    # char是定長,varchar是可變長
    username = models.CharField(max_length=32)
    password = models.CharField(max_length=32)


class Book(models.Model):
    name = models.CharField(max_length=64)
    price = models.IntegerField()

五 路由轉(zhuǎn)換器

轉(zhuǎn)換器:
    # str,匹配除了路徑分隔符(/)之外的非空字符串,這是默認的形式
    # int,匹配正整數(shù),包含0。
    # slug,匹配字母、數(shù)字以及橫杠、下劃線組成的字符串。
    # uuid,匹配格式化的uuid,如 075194d3-6885-417e-a8a8-6c931e272f00。
    # path,匹配任何非空字符串,包含了路徑分隔符(/)(不能用?)
    path('books/<int: pk>', BookView.as_view()),

到了這里,關(guān)于Web開發(fā)模式、API接口、restful規(guī)范、序列化和反序列化、drf安裝和快速使用、路由轉(zhuǎn)換器(復(fù)習(xí))的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • Android開發(fā)規(guī)范:API接口安全設(shè)計規(guī)范

    Android開發(fā)規(guī)范:API接口安全設(shè)計規(guī)范

    書籍購買地址:京東 當當 天貓 API接口設(shè)計系列文章 Android開發(fā)規(guī)范:API接口安全設(shè)計規(guī)范 Android開發(fā)規(guī)范:API接口通用設(shè)計規(guī)范 文章目錄 防篡改 防重放 Https APP的數(shù)據(jù)來源就是API接口,所以API接口對于APP的意義來說不言而喻。 設(shè)計API接口最重要的考慮點就是安全機制。 我們

    2024年04月09日
    瀏覽(33)
  • Django REST framework中的序列化Serializers

    序列化器允許將諸如查詢集和模型實例之類的復(fù)雜數(shù)據(jù)轉(zhuǎn)換為原生 Python 數(shù)據(jù)類型,然后可以將它們輕松地呈現(xiàn)為 JSON,XML 或其他內(nèi)容類型。序列化器還提供反序列化,在首次驗證傳入數(shù)據(jù)之后,可以將解析的數(shù)據(jù)轉(zhuǎn)換回復(fù)雜類型。 簡單來說,服務(wù)器通過api 返回數(shù)據(jù)(json格

    2024年02月09日
    瀏覽(23)
  • django rest_framework 框架動態(tài)設(shè)置序列化返回的字段

    django rest_framework 框架動態(tài)設(shè)置序列化返回的字段

    動態(tài)修改字段可以使Django rest框架API像graphQL端點一樣,只從模型中檢索所需的字段。 一旦序列化器被初始化,就可以使用.fields屬性訪問序列化器上設(shè)置的字段字典。訪問和修改此屬性允許您動態(tài)修改序列化器。 顯式地修改fields參數(shù)可以幫助您做一些奇怪的事情,例如在運行

    2024年02月16日
    瀏覽(25)
  • Flink復(fù)習(xí)3-2-4-6-1(v1.17.0): 應(yīng)用開發(fā) - DataStream API - 狀態(tài)和容錯 - 數(shù)據(jù)類型&序列化 - 概述

    Apache Flink handles data types and serialization in a unique way, containing its own type descriptors, generic type extraction, and type serialization framework. This document describes the concepts and the rationale behind them. Apache Flink以獨特的方式處理數(shù)據(jù)類型和序列化,包含自己的類型描述符、泛型類型提取和類型序列化

    2024年02月12日
    瀏覽(25)
  • 【Go Web開發(fā)】Web初識、RESTful架構(gòu)和RESTful API詳解、Gin框架的安裝和簡單使用

    【Go Web開發(fā)】Web初識、RESTful架構(gòu)和RESTful API詳解、Gin框架的安裝和簡單使用

    博主簡介: 努力學(xué)習(xí)的大一在校計算機專業(yè)學(xué)生,熱愛學(xué)習(xí)和創(chuàng)作。目前在學(xué)習(xí)和分享:數(shù)據(jù)結(jié)構(gòu)、Go,Java等相關(guān)知識。 博主主頁: @是瑤瑤子啦 所屬專欄: Go語言核心編程 近期目標: 寫好專欄的每一篇文章 全稱: “萬維網(wǎng)”(World Wide Web) 本質(zhì): 系統(tǒng)(基于互聯(lián)網(wǎng)).

    2024年02月03日
    瀏覽(25)
  • Rust Web 全棧開發(fā)之 Actix 嘗鮮并構(gòu)建REST API

    actix-web v4.3.1 actix-rt v2.8.0 目錄 Cargo.toml webservice/Cargo.toml webservice/src/bin/server1.rs 運行 客戶端瀏覽器 互聯(lián)網(wǎng) Actix HTTP Server Actix的并發(fā)(concurrency) Actix支持兩類并發(fā): 異步I/O:給定的OS原生線程在等待I/O時執(zhí)行其他任務(wù)(例如偵聽網(wǎng)絡(luò)連接) 多線程并行:默認情況下啟動OS原生

    2024年02月06日
    瀏覽(17)
  • RESTful接口設(shè)計規(guī)范

    RESTful是目前最流行的API設(shè)計規(guī)范,它是用于Web數(shù)據(jù)接口的設(shè)計。從字面可以看出,他是Rest式的接口,所以我們先了解下什么是Rest。 REST與技術(shù)無關(guān),它代表的是一種軟件架構(gòu)風(fēng)格,REST它是 Representational State Transfer的簡稱,中文的含義是: “表征狀態(tài)轉(zhuǎn)移” 或 “表現(xiàn)層狀態(tài)轉(zhuǎn)

    2024年02月06日
    瀏覽(23)
  • restful風(fēng)格接口命名規(guī)范

    (一)rest 1.概念 REST即表述性狀態(tài)傳遞(英文:Representational State Transfer,簡稱REST)是Roy Fielding博士在2000年他的博士論文中提出來的一種軟件架構(gòu)風(fēng)格。它是一種針對網(wǎng)絡(luò)應(yīng)用的設(shè)計和開發(fā)方式,可以降低開發(fā)的復(fù)雜性,提高系統(tǒng)的可伸縮性。 可理解為: URL定位資源,用H

    2024年02月02日
    瀏覽(17)
  • restful接口設(shè)計規(guī)范[僅供參考]

    應(yīng)該盡量將API部署在專用域名之下。 如果確定API很簡單,不會有進一步擴展,可以考慮放在主域名下。 應(yīng)該將API的版本號放入URL。 另一種做法是,將版本號放在HTTP頭信息中,但不如放入URL方便和直觀。Github就采用了這種做法。 因為不同的版本,可以理解成同一種資源的不

    2024年02月15日
    瀏覽(46)
  • Java feign接口調(diào)用后返回子類,序列化子類反序列化只得到父類

    需要修改序列化方法 我存的時候放的子類,接收到卻是只有父類的數(shù)據(jù) feign默認使用jackson進行序列化,需要在父類上加上注解 @JsonTypeInfo(use = JsonTypeInfo.Id.CLASS) 在父類頭上增加注解: https://blog.csdn.net/qq_39493105/article/details/126061848

    2024年02月14日
    瀏覽(16)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包